Providing telephony services to terminals behind a firewall and/or a network address translator

ABSTRACT

A method and apparatus for allowing telephony or other types of media communications and services to be provided for a device ( 24 ) having a private network address that resides behind a firewall and network address and port translation (NAPT) module (which is unaware of the underlying protocol for the communications and services). Examples of the underlying protocol includes the Session Initiation Protocol (SIP) and Real-Time Protocol (RTP). A path through the firewall and NAPT module is defined by use of keep-alive messages communicated through the firewall and NAPT module. Addresses that are allocated by the firewall and NAPT module are associated with the device ( 24 ) for both signaling and media communications. A feature of the firewall that enables the provision of telephony and media communications through the firewall that is protocol-unaware is that the firewall allows responses to messages initiated by the device back through the firewall.

CROSS-REFERENCES TO RELATED APPLICATIONS

This application is a continuation of co-pending U.S. patent applicationSer. No. 13/584,105, filed on Aug. 13, 2012, entitled PROVIDINGTELEPHONY SERVICES TO TERMINALS BEHIND A FIREWALL AND/OR A NETWORKADDRESS TRANSLATOR, which claims priority to previously filed U.S.patent application Ser. No. 11/601,394, filed on Nov. 17, 2006, entitledPROVIDING TELEPHONY SERVICES TO TERMINALS BEHIND A FIREWALL AND/OR ANETWORK ADDRESS TRANSLATOR, which claims priority to previously filedU.S. patent application Ser. No. 09/881,594, filed on Jun. 14, 2001,entitled PROVIDING TELEPHONY SERVICES TO TERMINALS BEHIND A FIREWALLAND/OR NETWORK ADDRESS TRANSLATOR, each of which is hereby incorporatedherein by reference in its entirety.

TECHNICAL FIELD

The invention relates generally to providing telephony services toterminals behind a firewall and/or a network address translator.

BACKGROUND

Various forms of communications can be performed in packet-basednetworks, such as electronic mail, web browsing, file transfer, and soforth. With the increased capacity and reliability of packet-basednetworks, voice communications (along with other forms of real-time,interactive communications) have also become feasible. In suchcommunications, voice and other real-time data are carried in packetsthat are sent across the network.

Standards have been proposed for voice and multimedia communicationsover packet-based networks. One such standard is the H.323Recommendation from the International Telecommunication Union (ITU).Another standard for voice and multimedia communications is the SessionInitiation Protocol (SIP), as developed by the Internet Engineering TaskForce (IETF). Generally, H.323, SIP, and other control protocols areused for negotiating session information to coordinate the establishmentof a call session. Once negotiation setup has been completed, packetizedmedia (including voice or other forms of real-time data) can flowbetween endpoints. A media transport protocol, such as the Real-TimeProtocol (RTP), is used for conveying packetized media between theendpoints.

Various issues are associated with communications over packet-basednetworks. One is the dwindling supply of network addresses, such asInternet Protocol (IP) addresses. To address this problem, networkaddress translation (NAT) is provided to enable address translationsbetween public and private networks. By reusing a pool of privateaddresses in different private networks, the virtual supply of networkaddresses is extended. Another concern of packet-based communications issecurity. Once a network address of a specific node is known, thisnetwork address can be used as routing information to gain illegalaccess to the node and all of its resources. Network address translationcan be used to hide network addresses of nodes to protect such nodes.

Also, to prevent unauthorized access of a private network, a firewall isplaced between the private network and a public network. Thus, in atypical arrangement, nodes and terminals on a private network areconnected behind a node that includes both a firewall and a networkaddress translator (NAT). Collectively, such a node can be referred toas a “firewall and NAT module” or “firewall and NAT device.”

Generally, to offer telephony services to terminals or clients thatreside behind a firewall and NAT module, some modification typically isneeded of the firewall software. One issue is that a firewall does notallow unsolicited connections from a system or device outside a privatenetwork to nodes or devices on the private network. Another issue isthat, because of the presence of a NAT, a network address allocated to aterminal (for communicating bearer traffic packets) by the NAT is notknown until the network address translation actually occurs. Note thatthe address used by the terminal for call session setup signaling(control signaling) may be different for the address used forcommunication of bearer traffic packets (carrying telephony media suchas voice). This is because a NAT typically dynamically assigns addresseson an as-needed basis after a call session has been established andbearer traffic packets are actually communicated. A need thus exists foran improved method and apparatus of providing telephony services toterminals or systems behind a firewall and NAT.

SUMMARY

In general, according to one embodiment, a device capable of being usedin communications through a firewall and network address translatorincludes an interface adapted to exchange messages with a node onanother side of the firewall and network address translator. Theexchange of messages is initiated by the device, which is behind thefirewall and network address translator. The exchange of messagesbetween the device and the node results in creation of a path throughthe firewall and network address translator. A controller is adapted torepeatedly send keep-alive messages to maintain the path through thefirewall and network address translator.

In general, according to another embodiment, a system for use incommunications between a first terminal and a second terminal, with thefirst terminal coupled to a remote network address translator, includesan interface adapted to communicate with the remote network addresstranslator. The system further includes a storage module to storenetwork address translation information for the first terminal. Acontroller is adapted to partially create the network addresstranslation information during setup of a communications session betweenthe first and second terminals and to wait for a media packet originatedby the first terminal after the communications session has been set upto complete the network address translation information.

Some embodiments of the invention may have one or more of the followingadvantages. By maintaining a path through a firewall and network addresstranslator, the path can be used for control signaling communicated fromoutside a private network to a terminal behind the firewall and networkaddress translator to establish communications sessions (e.g., callsessions). Using techniques according to some embodiments, substantialmodification of the firewall and network address translator can beavoided. As a result, the firewall does not need to be aware of theunderlying protocol used for the communications session.

Other features and advantages will become apparent from the followingdescription, from the drawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example communications system thatincorporates an embodiment of the invention.

FIG. 2 is a block diagram of components of an application server and amedia portal, in accordance with an embodiment.

FIG. 3 illustrates mapping of source and destination addresses and portsin a media packet by the media portal.

FIG. 4 is a message flow diagram of a registration procedure by a devicebehind a firewall and network address and port translation (NAPT)module, in accordance with an embodiment.

FIG. 5 is a message flow diagram of a call setup procedure betweendevices behind respective firewall and NAPT modules, in accordance withan embodiment.

FIG. 6 is a message flow diagram of a process of updating NAPT tables inrespective media portals in response to communication of media packetsby the devices of FIG. 5.

DETAILED DESCRIPTION

In the following description, numerous details are set forth to providean understanding of the present invention. However, it will beunderstood by those skilled in the art that the present invention may bepracticed without these details and that numerous variations ormodifications from the described embodiments may be possible.

Referring to FIG. 1, a communications system 10 includes a publicnetwork (e.g., the Internet) 14, an enterprise 16 (e.g., a company, agovernment agency, a university, or other organization of multipleusers), a service provider 12, and a public switched telephone network(PSTN) 20. The arrangement of FIG. 1 is shown for purposes ofillustration and example, as other embodiments can have otherarrangements.

The service provider 12 includes a private network 50 coupled to variousinternal nodes, and the enterprise 16 includes a private network 26coupled to various internal nodes and terminals. The service provider 12enables access by subscribers of various resources in the communicationssystem 10, including the public network 14 and the PSTN 20. Thus, a userstation coupled to the public network 14, such as one of user stations22 or one of user stations 24 in the enterprise 16, can perform variousforms of communications through the service provider 12. Examples ofpossible communications include real-time, interactive communications(e.g., voice, video conferencing, interactive electronic gaming, filetransfer, whiteboarding, and so forth). Interactive electronic gamingrefers to a session in which data associated with an electronic game(e.g., chess) is exchanged between two or more players over a network.Whiteboarding refers to a session in which notes can be written byparticipants of the session over a network to a virtual whiteboard.

The user stations 24, which are connected to the enterprise privatenetwork 26, communicate with the public network 14 through a bordersystem 28. In one example, the border system 28 includes a firewall andnetwork address and port translation (NAPT) capabilities, which areprovided by a firewall device and an NAPT device. The firewall deviceand NAPT device can be implemented as separate components on separateplatforms, or they can be integrated on the same platform. In theensuing discussion, a firewall device and NAPT device are referred tocollectively as a “firewall and NAPT module.” However, although referredto in the singular, the firewall and NAPT module can be made up ofplural modules (implemented as software, hardware, or a combinationthereof) in the border system 28 or in multiple systems. Also, althoughthe discussion refers to features of the firewall and NAPT module, itshould be understood that certain features are provided by the firewallportion while other features are provided by the NAPT module. As will bedescribed further below, various issues are associated with provision oftelephony services by the service provider 12 to devices behind thefirewall and NAPT module.

The user stations 22 and 24 shown in FIG. 1 can be network telephones(which are telephones including a network interface to enablecommunication with a packet-based network), computers fitted with voiceprocessing capabilities (referred to as “softphones”), or otherterminals capable of participating in real-time, interactivecommunications sessions. One example of a network telephone is the i2004telephone from Nortel Networks. Examples of other user stations that canbe endpoints of communications sessions include mobile stations 30coupled by wireless links to a radio access network (RAN) 32, which isin turn connected to the PSTN 20. Also, a wired telephony device 34 canbe coupled to the PSTN 20.

The service provider 12 includes various components that are visible onthe public network 14, including a web server 38, a network telephonemanager 40, application servers 42 and 43, and media portals 44 and 45.The service provider 12 includes internal nodes that are not visible tothe public network 14, including a gateway 36 to the PSTN 20, a databaseserver 48, an announcement server 49, and other nodes (not shown). Thegateway 36 translates between call control signaling and media accordingto a first format (e.g., packet-based format) used on the public network14 and another format (e.g., circuit-switched format) used on the PSTN20. The database server 48 stores information of registered devices,including information relating to which domain the devices are in, andother information.

The web server 38 presents web pages that can be browsed by users on thepublic network 14. The network telephone manager 40 is used for managingnetwork telephones. The network telephone manager 40 generates andreceives call control signaling on behalf of the network telephones.Once a call is established, media is communicated directly between twoendpoints (e.g., two network telephones). In other embodiments, thenetwork telephones may be capable of exchanging and processing callcontrol signaling without the assistance of the network telephonemanager 40.

The application server 42 or 43 communicates call control signaling withstations or nodes on the public network 14 or on the private network 50for establishing a call. Once the call is established, media and/orbearer traffic is communicated through the media portal 44 or 45 betweenendpoints. In one embodiment, the media packets can contain Real-TimeProtocol (RTP) data that are carried within a User Datagram Protocol(UDP)/Internet Protocol (IP) packet.

In one example, call control signaling for establishing a call sessionis according to a Session Initiation Protocol (SIP). SIP is part of themultimedia data and control architecture from the IETF, and one versionof SIP is described in Request for Comments (RFC) 2543, entitled “SIP:Session Initiation Protocol,” dated 1999. SIP can be used to initiatecall sessions as well as to invite members to a session that may havebeen advertised by some other mechanism, such as electronic mail, webpages, and so forth. RTP, which defines a protocol for transportingreal-time data, is described in RFC 1889 entitled “RTP: A TransportProtocol for Real-Time Applications,” dated January 1996. UDP defines atransport layer that is described in RFC 768, entitled “User DatagramProtocol,” dated August 1980. One version of IP is described in RFC 791,entitled “Internet Protocol,” dated September 1981, while anotherversion of IF is described in RFC 2460, entitled “Internet Protocol,Version 6 (IPv6) Specification,” dated December 1998. Other standardscan also be employed to provide call control signaling, such as theH.323 Recommendation from the International Telecommunication Union(ITU).

As used here, a “call session” refers generally to a real-time,interactive communications session that involves the exchange ofreal-time data between multiple parties. An interactive communicationssession refers to a session in which two or more parties are involved inan exchange of data. A real-time, interactive communication sessionrefers to an exchange of data, such as audio and/or video data, on asubstantially real-time basis between two endpoints. A session issubstantially real-time if interaction is occurring between twoendpoints with communication from one endpoint followed relativelyquickly by a response or another communication from the other endpoint.A “call request” is a message for establishing a call session. A “mediapacket” or “media data unit” refers to a packet or data unit carryingbearer traffic (e.g., voice data, video data, interactive electronicgaming data, file transfer data, whiteboarding data, etc.) in a callsession.

In accordance with some embodiments of the invention, telephony servicesare provided by the service provider 12 to devices on the enterpriseprivate network 26 without substantial modification of the firewall andNAPT module (referred to as the “enterprise firewall and NAPT module”)in the border system 28. An issue associated with providing telephonyservices to a device behind an enterprise firewall and NAPT module isthat the firewall and NAPT module prevents unsolicited access by anexternal device. Unless a path through the enterprise firewall and NAPTmodule is opened, the firewall and NAPT module hides the identity(address and port) of the device behind the firewall and NAPT module.Thus, any incoming calls to such a device would be unable to reach thedevice. To address this issue in accordance with one embodiment of theinvention, a path or connection is created and maintained between adevice behind the firewall and NAPT module and the application server 42or 43 (which includes a SIP proxy or other like device). Maintenance ofthe path is accomplished by using a “keep-alive” signaling mechanismthat issues periodic messages between the device and application server42 or 43, which allows the firewall and NAPT module to maintainallocation of resources (e.g., network address and port) for the callsession.

The use of keep-alive messages to maintain the path is needed in someembodiments for two reasons. One is that UDP provides for connectionlesscommunications between two endpoints. Another is that once a message issent by a device behind an enterprise firewall and NAPT module is sent,the path through the enterprise firewall and NAPT module through whichresponses can be sent to the device is maintained open for only somepreset amount of time. After the preset amount of time, the path isclosed.

Another issue associated with creating call sessions with a devicebehind an enterprise firewall and NAPT module is that the externaladdress and port of the device behind the enterprise firewall and NAPTmodule allocated for media communications (communications of mediapackets carrying bearer traffic such as voice) is unknown until thedevice actually starts sending media packets. This is due to the factthat the enterprise firewall and NAPT module does not allocate anexternal address and port to the device for media communications untilmedia communications actually start. Note that during call sessionsetup, the enterprise firewall and NAPT module allocates an externaladdress and port to the device for communication of call controlsignaling—however, the control address and port is different from themedia address and port for communication of media packets.

One of the tasks performed by the media portal 44 or 45 is networkaddress and port translation (NAPT) of media packets exchanged during acall session. Note that an NAPT module in the media portal 44 or 45 isseparate and distinct from the enterprise firewall and NAPT module.Whereas the enterprise firewall and NAPT module is provided to protectdevices on the enterprise private network 26, the NAPT module in themedia portal 44 or 45 is provided to hide identities of devices on theservice provider private network 50 and to shield identities ofendpoints that communicate media packets through the media portal 44 or45 during a call session. The NAPT module in the media portal 44 or 45translates both the source and destination addresses (e.g., IPaddresses) and ports (e.g., UDP ports) of each received packet. This isa departure from standard network address and port translators, whichtypically translate only one of the source and destination addresses fora given direction of the media packet.

To perform NAPT, the media portal 44 or 45 maintains an NAPT table thatcontains information for mapping addresses and ports in media packets.The media portal 44 or 45 is able to partially create NAPT mappingsduring a call establishment flow, but the media portal 44 or 45 waitsuntil the first media packet arrives from device(s) behind respectivefirewall and NAPT module(s) before the NAPT mappings can be completed.

Although reference is made to NAPT modules that translate both networkaddresses and ports, other embodiments may involve translation modulesthat translate only the network address or only the port. Calls handledthrough the service provider 12 can involve endpoints that are bothlocated outside the private network 50, such as user stations 22 and/oruser stations 24. Alternatively, a call can involve an endpoint outsidethe service provider private network 50 and a node on the serviceprovider private network 50, such as the gateway 36 or the announcementserver 49. Also, although only one enterprise 16 is illustrated in FIG.1, other arrangements can have plural enterprises with their respectiveenterprise private networks and firewall and NAPT modules.

The various arrangements described herein are provided as examples only,as other embodiments may utilize other arrangements.

Referring to FIG. 2, components of the application server 42 or 43 andthe media portal 44 or 45 are illustrated. The application server 42 or43 includes control logic 100 and a call processing module 102. The callprocessing module 102 receives call control signaling from the publicnetwork 14 and the private network 50. The call processing module 102includes a network interface 104 to the public network 14, one or moreprotocol layers 106 above the network interface 104, and a SIP stack 108for processing SIP messages. In one embodiment, the protocol layers 106include a UDP transport layer and an IP network layer.

The call processing module 102 also includes a second network interface110 coupled to the private network 50, and one or more protocol layers112 above the network interface 110.

The control logic 100 of the application server 42 or 43 communicateswith host logic 114 in the media portal 44. The control logic 100 andhost logic 114, which can be implemented in software or a combination ofsoftware and hardware, employ a predefined messaging scheme to exchangemessages with each other. In one example, the messaging scheme isaccording to an enhanced version of the Media Gateway Control Protocol(MGCP), as described in RFC 2705, entitled “Media Gateway ControlProtocol (MGCP), Version 1.0,” dated October 1999. Enhancements to theMGCP messages are added to support transport of certain types of databetween the media portal 44 or 45 and the application server 42 or 43.The enhancements include the introduction of a new format of a parameterEndpointId used to identify endpoints and a parameter (referred to asX+NAPTAddressType) to specify the type of network mapping. Suchenhancements are explained below.

The media portal 44 or 45 also includes a media packet engine 116. Inone embodiment, the media packet engine 116 can be implemented onmultiple circuit boards or blades (each with two interfaces to thepublic and private networks 14 and 50) to enhance concurrentcommunication of messages. The media packet engine 116 includes a firstnetwork interface 118 coupled to the public network 14, and one or moreprotocol layers 120 above the network interface 118. Similarly, a secondnetwork interface 122 is coupled to the private network 50, and one ormore protocol layers 124 are provided above the network interface 122.An RTP/RTCP module 126 is also part of the media packet engine 116. RTP,which provides a mechanism for transporting real-time data across apacket-based network, is an application sublayer that typically runs ontop of the UDP layer (which is part of the protocol layers 120 or 124).Specified along RTP is the Real-Time Control Protocol (RTCP), whichprovides a mechanism for sharing various session data between endpoints.In accordance with one embodiment, voice and other forms of real-timedata are carried in RTP packets communicated across the public network14 and the private network 50.

Also included in the media packet engine 116 is an NAPT module 127 andan NAPT table 128 that contains plural entries 130. Each entry of theNAPT table 128 contains mapping information for source and destinationaddresses and ports of media packets received from the networks 14 and50. For a given call session involving a first device and a seconddevice, each NAPT table entry includes a first address and port of thefirst device, a second address and port of the second device, a firstalias address and port mapped to the first device address and port, anda second alias address and port mapped to the second device address andport. The contents of each NAPT table entry are discussed further below.The NAPT table entry is dynamically updated as a call session is beingestablished. Once the call session is terminated, the allocatedresources in the NAPT table entry are deleted and made available toother call sessions.

The NAPT table 128 is stored in a storage module 132. The NAPT module127 uses information in the NAPT table 128 to perform network addressand port translations.

Referring to FIG. 3, the network address and port translation performedin the media portal 44 or 45 according to an embodiment is illustrated.A received IP packet 200 contains a payload section 209 (which includesthe RTP packet), an IP header 201, and a UDP header 205. The IP header201 contains a source network address 202 and a destination networkaddress 204, in addition to other information. The UDP header 205contains a source port 206, a destination port 208, and otherinformation. The IP packet 200 is applied (at 210) through NAPT mappingbased on the NAPT table 128. The output packet 220, after the NAPTmapping, includes the same payload 209, but the source and destinationaddresses and source and destination ports have been translated. Thesource network addresses 222 has been translated from IP address IP₁ toIP address IP₁′, the destination address 224 has been translated fromIP₂′ to IP₂, the source port 226 has been translated from port P₁ toport P₁′, and the destination port 228 has been translated from port P₂′to port P₂.

Thus, from the perspective of each endpoint, the media portal 44 or 45is the node that each endpoint is communicating with. In effect, themedia portal 44 or 45 masquerades as the endpoint in a call session thateach of the two “real” endpoints is communicating with. As noted above,the media portal 44 or 45 resides in the media path of a call sessionfor communicating media packets containing bearer traffic. Note that ifone of the endpoints is behind an enterprise firewall and NAPT module,then the NAPT mapping in the media portal 44 or 45 is not completeduntil the endpoint behind the enterprise firewall and NAPT module sendsits first media packet.

In the control path, the application server 42 or 43 serves as the SIPproxy for one or more of the user stations 22 or 24 and other devices(e.g., the gateway 36) that are capable of participating in callsessions. Thus, as each user station 22 or 24 or other device isstarted, the user station 22 or 24 or other device performs SIPregistration with the application server 42 or 43.

FIG. 4 shows an example registration procedure that involves a firstpair of application server and media portal (42 and 44), a second pairof application server and media portal (43 and 45), a first firewall andNAPT module FNA, a second firewall and NAPT module FNB, and devices Aand B. Device A resides behind the firewall and NAPT module FNA (such asin a first border system, e.g., 28 in FIG. 1), while device B residesbehind the second firewall and NAPT module FNB (e.g., in another bordersystem). As illustrated, device A sends (at 302) a SIP REGISTER messageto the first application server 42, with the SIP REGISTER containing thefollowing according to one example:

IP Header: src = 10.1.1.1 dst = 147.3.3.3 UDP Header: src port = 5060dst port = 5060 Payload: SIP REGISTER From: A@xxx.com ... [“NAPT Active”flag*]

The SIP REGISTER packet includes an IP header containing source anddestination IP addresses, a UDP header containing source and destinationUDP ports, and a payload. The source network address and port (e.g.,10.1.1.1:5060), which is a private address that has meaning only on theenterprise private network 26, identifies device A, while thedestination network address and port (e.g., 147.3.3.3:5060), which is apublic address, identifies the first application server 42. The payloadof the SIP REGISTER message indicates that the registration is beingattempted from device A (having identifier A@xxx.com). In addition, thepayload has an NAPT Active flag, which indicates that the message isfrom a device that is subject to enterprise NAPT (which allocates apublic address for device A). In one embodiment, the NAPT Active flag isinserted into the SIP REGISTER message payload by the device A. Thisflag is used to indicate special handling at the application server.

The SIP REGISTER message is routed through the firewall and NAPT moduleFNA, which creates a mapping (at 304) between the source address andport A_(internal) (of the device A) and an available external addressand port A_(public) (allocated by the firewall and NAPT module FNA).This mapping is maintained by the firewall and NAPT module FNA toprovide a path for responses to flow back to device A. Conventionally,the mapping is removed after a configured time interval passes. However,as explained below, the mapping is maintained by a keep-alive signalingmechanism to allow a signaling path between device A and the applicationserver 42 through the firewall and NAPT module FNA.

The firewall and NAPT module FNA forwards (at 306) the SIP REGISTERmessage to the first application server 42. The SIP REGISTER messageremains the same, except the source network address and portA_(internal) in the IP and UDP headers in the REGISTER message has beenreplaced with A_(public). Upon receipt of the SIP REGISTER message, thefirst application server 42 determines that the NAPT Active flag hasbeen set and creates (at 308) an association between A@xxx.com and theFrom: address (A_(public)) in the packet. This is contrasted to thestandard process of mapping A@xxx.com to the SIP REGISTER Contact:Address. If needed, the application server 42 creates or updates aprofile associated with the registering device in the database server48.

The first application server 42 then responds (at 310) with a SIP 200 OKmessage. This message is sent to the enterprise NAPT address(A_(public)), not the “real” address (A_(internal)) of device A, sincethe “real” address is a private address and cannot be properly routed onthe public network. The SIP 200 OK message has the following contentaccording to one example:

IP Header: src = 147.3.3.3 dst = 47.2.2.2 UDP Header: src port = 5060dst port = 6000 Payload: SIP 200 OK

The SIP 200 OK message routes to the enterprise firewall and NAPT moduleFNA for xxx.com, where the public destination address (A_(public) or47.2.2.2:6000) is mapped to the internal address and port (A_(internal))of the originating terminal. The IP/UDP headers of the packet containingthe SIP 200 OK message are modified, and the modified packet is sent bythe enterprise firewall and NAPT module FNA (at 312) to device A. Themodified SIP 200 OK message is the same as the original SIP 200 OKmessage except the destination network address and port in the IP andUDP headers of the OK message has been changed from A_(public) toA_(internal). The device A receives the SIP 200 OK message asconfirmation that the registration was successful.

At this point, a two-way signaling path exists between device A and theapplication server 42 through the firewall and NAPT module FNA. Thefirewall and NAPT module FNA includes a timer that when expired causesthe signaling path between the device A and application server 42 to beclosed (which results from the NAPT mapping in the application server 42being removed).

To maintain the signaling path active, device A periodically transmits(at 314) a “keep-alive” message through the enterprise firewall and NAPTmodule FNA to maintain the mapping of the SIP signaling addresses forthe duration of the registration. In one example, the keep-alive messageis a SIP PING message. In other embodiments, other types of keep-alivemessages can be used. The SIP PING message, which contains the sourceaddress and port of device A and the destination address and port of theapplication server 42, causes the timer in the firewall and NAPT moduleFNA to reset and start a new count-down, thereby enabling the allocationof mapping resources and thus the signaling path through the firewalland NAPT module FNA. In another embodiment, the keep-alive messages areinitiated by a network server (e.g., the application server 42 or someother network node) rather than device A.

The timing of the keep-alive messages is controlled by a timer 350 indevice A. The timer 350 can be configured to count a predetermined timeperiod after which the keep-alive message is transmitted. Enterprisedevice A also includes a control module 354 (implemented in softwareand/or hardware) that provides control tasks (e.g., exchanging callcontrol signaling and communicating media traffic) for the enterprisedevice A. The enterprise device A also includes an interface 358 thatenables communications over data networks.

Device B, which is in a separate enterprise private network associatedwith firewall and NAPT module FNB, performs a similar registrationprocess (at 316) with the second application server 43. A mapping iscreated (at 318) by the enterprise firewall and NAPT module FNB betweenthe internal network address and port (B_(internal)) and an external orpublic network address and port (B_(public)). The second applicationserver 43 also creates (at 320) an association between B@yyy.com and theexternal network address and port B_(public) that the message came from.To maintain the SIP signaling path open, enterprise terminal B alsoperiodically sends (at 322) keep-alive messages.

Enterprise B includes a timer 352, control module 356, and an interface360 that are similar to respective components in enterprise A. In theabove example, the enterprise devices A and B contain timers to enablethem to send keep-alive messages. However, in an alternative embodiment,the application server 42 or 43 can include the timer and logic to sendkeep-alive messages to the enterprise devices A and B.

Thus, a SIP registration process is provided that enables a signalingpath to be maintained between an enterprise device and a SIP proxy (theapplication server 42 or 43) through an enterprise firewall and NAPTmodule (FNA or FNB) for the duration of a given SIP registration,without requiring that the enterprise firewall and NAPT module be awareof SIP. This is referred to as a “transparent firewall” functionality.However, although a constant signaling is established for the enterprisedevice in the registration process, the same is not true of the mediapath. The media path actually changes on a per-session basis. This isdue to the fact that the enterprise firewall and NAPT module dynamicallyassigns mappings as required from its currently available pool ofresources. An implication of this is that the enterprise firewall andNAPT module only sets up the mapping upon receipt of a media packet,which happens to occur after call setup has been completed and mediapackets are actually communicated.

The above example assumes that the enterprise devices A and B areSIP-enabled (that is, they are capable of exchanging SIP messages).However, in some cases, the enterprise device A or B may not beSIP-enabled. An example of such a device is the i2004 network telephone,which cooperates with a network telephone manager (e.g., the networktelephone manager 40 in FIG. 1). In this alternative arrangement, theenterprise device A or B sends a “ResumeConnection” message (instead ofa SIP REGISTER message) to the network telephone manager 40 through thefirewall and NAPT module. A signaling path through the firewall and NAPTmodule is established between the enterprise device and networktelephone manager 40. The SIP registration process for the enterprisedevice A or B can occur between the network telephone manager 40 andapplication server 42 or 43 over the service provider private network50.

Maintenance of the signaling path in this alternative embodiment betweenthe enterprise device and the network telephone manager 40 is similarlyaccomplished by using a timer in the network telephone manager 40, whichperiodically sends a message (based on the timer) to the enterprisedevice A or B. The enterprise device A or B acknowledges the message,thereby keeping the signaling path open. Again, the enterprise firewalland NAPT module need not be aware of the telephony protocol used betweenthe network telephone manager 40 and the enterprise device A or B.

Referring to FIG. 5, a call setup process is illustrated, in which NAPTmappings are established for enterprise devices A and B that residebehind respective firewall and NAPT modules FNA and FNB. In the exampleof FIG. 5, enterprise device A is the one that initiates the callsession. Enterprise device A does this by sending (at 402) a callrequest (e.g., a SIP INVITE message) to the first application server 42through the enterprise firewall and NAPT module FNA. The firewall andNAPT module FNA locates the associated mapping between the internalsource address and port (A_(internal)) and the assigned external addressand port (A_(public)). This mapping was established when enterprisedevice A initially registered for service with the first applicationserver 42 (see FIG. 4), which has been maintained through the use ofperiodic keep-alive messages.

An example SIP INVITE message is shown below:

IP Header: src = 10.1.1.1 dst = 147.3.3.3 UDP Header: src port = 5060dst port = 5060 Payload: SIP INVITE From: A@xxx.com To: B@yyy.com SDP:RTP/RTCP 10.1.1.1:1000

The source address and port A_(internal) (10.1.1.1:5060) specifiesenterprise device A, while the destination network address and port(147.3.3.3:5060) specifies an address and port of the first applicationserver 42. The payload section of the IP packet contains a SIP INVITEmessage, which contains a From: address, e.g., A@xxx.com (identifyingenterprise device A), and a To: address, e.g., B@yyy.com (identifyingenterprise device B). The SDP portion of the SIP INVITE messagespecifies the media network address and port (A_(media) _(—)_(internal), which in the example is 10.1.1.1:1000) where device Adesires to receive media packets. A_(media) _(—) _(internal) is port aprivate address and port used by the enterprise device A forcommunicating media packets. Note that A_(media) _(—) _(internal) formedia packet communications is different from A_(internal) for controlsignaling communications with the enterprise device A.

The firewall and NAPT module FNA substitutes A_(private) (the sourceaddress and port in the IP and UDP headers of the packet containing theINVITE message) with A_(public), and forwards the modified packetcontaining the SIP INVITE message (at 404) to the first applicationserver 42.

Upon receiving the SIP INVITE message, the first application server 42locates the application server for the yyy.com domain (of enterprisedevice B), and engages the first media portal 44 to prepare NAPTmappings for the call session that is to be established. The applicationserver 42 sends (at 406) a message to the media portal 44 to create theNAPT mapping information (in the form of an entry in the mapping table128). In one embodiment, the request includes an MGCP CreateConnectionmessage, with one example provided below:

CRCX 1234 A:0000@0.0.0.0 MGCP 0.1 C: 987651 M: recvonlyX+NAPTAddressType: ON:INT, TN:EXT MGCPVerb = CRCX (CreateConnection)TransactionId = 1234 EndpointId = A:0000@0.0.0.0 MGCPVersion = 0.1CallId = 987651 ConnectionMode = recvonly (receive only) NAPTAddressType= ON:INT, TN:EXT

One pertinent field of the CreateConnection message is the parameterEndpointId, which is equated to A:0000@0.0.0.0 (a dummy address), whereA represents audio. For video or other media, other indicators are used.The dummy address is used as an indicator that the address should befilled in later. The EndpointId parameter, which is a parameter whoseformat has been altered from the standard MGCP-defined EndpointId as anenhancement, identifies the address and port that the media portal 44 isto allocate resources for. The example provided above (and elsewhere inthis description) is a relatively simple implementation of EndpointId.Other fuller implementations include providing a larger part of themedia description that is in the SDP portion of the INVITE or other SIPmessage). Also, a CallId parameter is supplied in the MGCPCreateConnection message. The CallId parameter is used as a key to pointto an entry in the NAPT mapping table 128.

Another parameter in the MGCP CreateConnection message is a parameterX+NAPTAddressType to identify the different types (internal or external)of endpoints. The X+NAPTAddressType parameter is also added to the MGCPCreateConnection request as an enhancement. From the perspective of themedia portal 44 in the example above, the address and port of the mediaportal 44 interfacing the originating endpoint, which is the enterprisedevice A (through the enterprise firewall and NAPT module FNA), is apublic address and port (referred to as B_(media)″). The address andport of the media portal 44 interfacing the terminating endpoint, whichis the second media portal 45, is a private address and port (referredto as A_(media)′) on the service provider private network 50. Thus, theX+NAPTAddressType parameter is used to assign the appropriate public andprivate NAPT addresses and ports in the media portal 44.

The first application server 42 uses the X+NAPTAddressType parameter toinform the first media portal 44 to allocate a public NAPT address andport (B_(media)″ or TN) to interface the originating endpoint(enterprise device A through the enterprise firewall and NAPT moduleFNA), and to allocate a private NAPT address and port (A_(media)′ or ON)to interface the terminating endpoint (media portal 45). TN is theaddress and port at the media portal 44 or 45 that represents theterminating endpoint to the originating endpoint, while ON is theaddress and port at the media portal 44 or 45 that represents theoriginating endpoint to the terminating endpoint. In this example, mediapackets are exchanged between A_(media) (at the enterprise firewall andNAPT module FNA) and B_(media)″ (at the media portal 44); and mediapackets are exchanged between B_(media)′ (at the second media portal 45)and A_(media)′ (at the first media portal 44). When a media packet isreceived by the media portal 44, A_(media) is mapped to A_(media)′ whileB_(media)′ is mapped to B_(media)″.

In response to the MGCP CreateConnection request above, the media portal44 reserves NAPT resources (at 408) for communications of media packetsin the call session. However, at this point, the first media portal 44is unable to build a complete mapping of the address and port space. Thereason for this is that the address and port supplied in the SDP of theSIP INVITE is enterprise device A's private address (A_(media) _(—)_(internal)), which is not accessible from the outside world. Therefore,a dummy address and port is used to indicate this special case (e.g.,0.0.0.0:0000) using the EndpointId parameter in the MGCPCreateConnection message.

The first media portal 44 reserves two available NAPT network addressesand ports: the originating NAPT address and port (A_(media)′) and theterminating NAPT address and port (B_(media)″). However, the originatingendpoint network address and port (A_(media)) is not known at thispoint, nor is the terminating endpoint network address and port(B_(media)′). The mapping table entry at this point is shown below:

OrigEndpoint OrigNAPTAddr TermNAPTAddr TermEndpoint CallId (A_(media))(A_(media)′) (B_(media)″) (B_(media)′) 987651 A:0000@0.0.0.0A:4000@192.168.4.4 A:4000@147.4.4.4 ???

The mapping table entry is pointed to by the CallId parameter, which isused as a key.

Next, the first media portal 44 returns (at 410) the originating NAPTaddress and port (A_(media)′), to the first application server 42. Thefirst application server 42 also responds (at 412) to enterprise deviceA with a SIP 100 TRYING. Note that the TRYING message is likely to havebeen communicated earlier (for example, right after the applicationserver 42 receives the SIP INVITE message at 404).

Next, the first application server 42 performs a substitution ofA_(media) _(—) _(internal) with A_(media)′ in the SDP portion of the SIPINVITE message. The modified SIP INVITE message is sent (at 414) to thesecond application server 43.

When the modified SIP INVITE message arrives at the second applicationserver 43, the second application server 43 locates B@yyy.com andengages the second media portal 45 to reserve NAPT resources. This isaccomplished by sending (at 416) an MGCP CreateConnection message to thesecond media portal 45. From the perspective of the second media portal45, the originating endpoint (A_(media)′) is the first media portal 44,which is on the service provider private network 50. The terminatingendpoint (B_(media) _(—) _(internal)) is behind a firewall and NAPTmodule FNB served by the second application server 43. The firewall andNAPT module FNB dynamically maps B_(media) _(—) _(internal) to anexternal network address and port B_(media).

The network connection between the second media portal 45 and A_(media)′is a private network connection (on private network 50), while thenetwork connection between the media portal 45 and B_(media) is a publicnetwork connection. The second application server 43 uses theX+NAPTAddressType parameter in the CreateConnection message to informthe second media portal 45 to allocate respective NAPT (external andinternal) addresses and ports to each endpoint. In this example, theoriginating endpoint (A_(media)′) is an internal network address, so theNAPT address B_(media)′ or TN of the second media portal 45 thatcommunicates with A_(media)′ is assigned as an internal address. Theterminating endpoint B_(media) is an external public network address, sothe NAPT address A_(media)″ or ON of the second media portal 45 thatcommunicates with B_(media) is assigned as an external address.

The MGCP CreateConnection message sent at 416 according to one exampleis as follows:

CRCX 1234 A:4000@192.168.4.4 MGCP 0.1 C: 987651 M: recvonlyX+NAPTAddressType: ON:EXT, TN:INT MGCPVerb = CRCX (CreateConnectionTransactionId = 1234 EndpointId = A:4000@192.168.4.4 MGCPVersion = 0.1CallId = 987651 ConnectionMode = recvonly (receive only) NAPTAddressType= ON:EXT, TN:INT

The second media portal 45 reserves (at 418) two available addresses andports: originating NAPT network address and port (A_(media)″) andterminating NAPT address and port (B_(media)′). The created partialtable entry is as follows:

OrigEndpoint OrigNAPTAddr TermNAPTAddr TermEndpoint CallId (A_(media)′)(A_(media)″) (B_(media)′) (B media) 987651 A:4000@192.168.4.4A:2020@161.6.6.6 A:3300@192.168.6.6 ???

The table above specifies a mapping between A_(media)′ and A_(media)″,and a mapping between B_(media)′ and B_(media). The second media portal45 returns (at 420) the originating NAPT address and port (A_(media)″)to the second application server 43. The second application server 43then responds (at 422) to the first application server 42 with a SIP 100TRYING message.

The second application server 43 modifies the SIP INVITE message andforwards it (at 424) to enterprise device B through the firewall andNAPT module FNB. The second application server 43 modifies the SIPINVITE message by changing the SDP portion to substitute A_(media)′ withA_(media)″.

The firewall and NAPT module FNB performs another address and porttranslation, in which the destination address and port B_(public) in theIP and UDP headers of the SIP INVITE message is changed to B_(internal).The modified packet containing the SIP INVITE message is then forwarded(at 426) to enterprise device B.

Enterprise device B then signals the originating terminal with a SIP 180RINGING message. This is propagated (at 428) all the way back toenterprise device A through various intermediaries. When enterprisedevice B answers, it sends a SIP 200 OK message (at 430) to the secondapplication server 43.

The SIP 200 OK message according to one example includes the following:

IP Header: src = 10.5.5.5 dst = 161.4.4.4 UDP Header: src port = 5060dst port = 5060 Payload: SIP 200 OK From: B@yyy.com To: A@xxx.com SDP:RTP/RTCP 10.5.5.5:2000

The SDP portion of the SIP 200 OK message contains the source networkaddress and port (B_(media) _(—) _(internal)) of enterprise device B formedia communications where device B desires to receive media packets.However, because this address and port is private, it cannot be used byexternal devices for communication with the enterprise device B.

Upon receiving the SIP 200 OK message, the firewall and NAPT module FNBlocates the associated mapping between the source address and portB_(internal) for device B and the assigned external address and portB_(public). This mapping was established as part of the registrationprocedure described above, and maintained through the use of thekeep-alive messages. The firewall and NAPT module FNB substitutes thesource address and port in the IP and UDP headers of the SIP 200 OKmessage (replacing B_(internal) with B_(public)), and forwards (at 432)the message to the second application server 43. When the secondapplication server 43 receives the SIP 200 OK message, it sends aModifyConnection request (at 434) to the second media portal 45.

Since enterprise device B is configured behind the enterprise firewalland NAPT module FNB, the actual media address and port for enterprisedevice B will not be known until the enterprise device B transmits itsfirst media packet through the enterprise firewall and NAPT module FNB.Thus, the address and port B_(media) _(—) _(internal) in the SDP portionof the SIP 200 OK message is discarded, and a “dummy” address (e.g.,0.0.0.0:0000) is used. The MGCP ModifyConnection request in one exampleis shown below:

MDCX 1237 A:0000@0.0.0.0 MGCP 0.1 C: 987651 M: sendrecv MGCPVerb = MDCX(ModifyConnection) TransactionId = 1237 EndpointId = A:0000@0.0.0.0MGCPVersion = 0.1 CallId = 987651 ConnectionMode = sendrecv (send andreceive)

Using the CallId parameter as a key, a mapping table entry is identified(at 436), and the TermEndpoint parameter is filled with 0000@0.0.0.0. Atthis point, the second media portal 45 is not able to perform the NAPTfunction yet since it does not have the complete mapping information.

The second media portal 45 then returns (at 438) the terminating NAPTaddress and port (B_(media)′) in an MGCP response to the secondapplication server 43. The second application server 43 substitutes (inthe SDP portion of the SIP 200 OK message) address B_(media) _(—)_(internal) with B_(media)′, and forwards the SIP 200 OK message (at440) to the first application server 42.

In response to the SIP 200 OK message, the first application server 42sends a ModifyConnection request (at 442) to the first media portal 44to allocate the necessary NAPT address and port resources. The contentsof the MGCP ModifyConnection request is as follows:

MDCX 1237 A:3300@192.168.6.6 MGCP 0.1 C: 987651 M: sendrecv MGCPVerb =MDCX (ModifyConnection) TransactionId = 1237 EndpointId =A:3300@192.168.6.6 MGCPVersion = 0.1 CallId = 987651 ConnectionMode =sendrecv (send and receive)

The first media portal 44 uses the CallId parameter as a key to find themapping resources and fills (at 444) in the TermEndpoint field withaddress B_(media)′. The updated mapping table entry is as follows:

OrigEndpoint OrigNAPTAddr TermNAPTAddr TermEndpoint CallId (A_(media))(A_(media)′) (B_(media)″) (B_(media)′) 987651 A:0000@0.0.0.0A:4000@192.168.4.4 A:4000@147.4.4.4 3300@192.168.6.6

However, the first media portal 44 is still not yet able to perform NAPTtranslations since the OrigEndpoint address and port are still not knownat this point (filled with the dummy address).

The first media portal 44 then returns (at 446) the terminating NAPTaddress and port in an MGCP response. The first application server 42substitutes (in the SDP portion of the SIP 200 OK message) the addressB_(media)′ with B_(media)″. The first application server 42 sends (at448) the modified SIP 200 OK message to enterprise device A through thefirewall and NAPT module FNA. The firewall and NAPT module FNA locatesthe associated mapping between the assigned external address and port ofthe enterprise terminal A (A_(public)) and the internal address and port(A_(internal)) for enterprise device A and substitutes the informationin the destination address and port fields in the IP and UDP headers ofthe SIP 200 OK message (replacing A_(public) with A_(internal)). Themodified SIP 200 OK message is sent (at 450) from the firewall and NAPTmodule FNA to the enterprise device A.

Enterprise device A responds (at 452) with a SIP ACK message, which ispropagated through the various devices back to enterprise device B. Atthis point, a media session is established (at 454) between enterprisedevice A and enterprise device B through the first and second firewalland NAPT modules FNA and the first and second media portal 44 and 45.Note that the NAPT mappings in the first and second media portals atthis point are still not fully established. The media portals 44 and 45await transmission of media packets from respective enterprise devices Aand B to complete the NAPT mappings.

Referring to FIG. 6, according to one example after call setup (FIG. 5),enterprise device B is the first to send a media packet. The mediapacket is sent (at 458) from the enterprise device B to the second mediaportal 45 through the firewall and NAPT module FNB. The media packetcontains the following information:

IP Header: src = 10.5.5.5 dst = 161.6.6.6 UDP Header: src port = 2000dst port = 2020 Payload: [RTP packet]

The firewall and NAPT module FNB does not have a mapping for thecommunication of media packets, so FNB creates a mapping between theprivate media source address and port B_(media) _(—) _(internal) of thepacket and an available external address and port B_(media). The sourceaddress and port B_(media) _(—) _(internal) of the media packet isreplaced with the external address and port B_(media), and now containsthe following information:

IP Header: src = 61.3.3.3 dst = 161.6.6.6 UDP Header: src port = 7070dst port = 2020 Payload: [RTP packet]

The modified media packet is sent (at 460) to the second media portal45. When the second media portal 45 receives the packet, the secondmedia portal 45 fills (at 461) the TermEndpoint field with the sourceaddress and port information B_(media) from the media packet. Themapping table entry now looks as follows:

OrigEndpoint OrigNAPTAddr TermNAPTAddr TermEndpoint CallId (A_(media)′)(A_(media)″) (B_(media)′) (B_(media)) 987651 A:4000@192.168.4.4A:2020@161.6.6.6 A:3300@192.168.6.6 A:7070@61.3.3

The second media portal 45 consults the mapping table entry and performsa substitution of both the source and destination network addresses andports, and sends the modified media packet (at 462) to the first mediaportal 44.

However, the NAPT mapping information is not fully established in thefirst media portal 44 for the media session between enterprise devices Aand B, assuming that a media packet has not been received yet fromenterprise device A. Thus, the first media portal 44 is locked (at 464)in this waiting state (discarding packets) until a media packet arrivesfrom enterprise device A.

At some point, enterprise device A sends (at 466) a media packet to thefirst media portal 44 (through the firewall and NAPT module FNA). Themedia packet is as follows:

IP Header: src = 10.1.1.1 dst = 147.4.4.4 UDP Header: src port = 1000dst port = 4000 Payload: [RTP packet]

Since the firewall and NAPT module FNA does not have mappings for thesession yet, it creates a mapping between the private media sourceaddress and port A_(media) _(—) _(internal) (e.g., 10.1.1.1:1000) forenterprise device A and an available external address and portA_(media). The firewall and NAPT module FNA then substitutes the sourceaddress and port in the IP and UDP headers of the media packet, andsends the modified media packet (at 468) to the first media portal 44.

When the first media portal 44 receives the media packet from enterprisedevice A (really from the firewall and NAPT module FNA), the mediaportal 44 now has enough information to complete the mapping table entryfor the media session. As a result, it accesses the OrigEndpointinformation and replaces the dummy address 0.0.0.0:0000 with the sourceaddress and port A_(media) of the media packet received from thefirewall and NAPT module FNA. The mapped table entry in the first mediaportal 44 now looks as follows:

OrigEndpoint OrigNAPTAddr TermNAPTAddr TermEndpoint CallId (A_(media))(A_(media)′) (B_(media)″) (B_(media)′) 987651 A:6060@47.2.2.2A:4000@192.168.4.4 A:4000@147.4.4.4 A:3300@192.168.6.6

The first media portal 44 then modifies the source and destinationnetwork addresses and ports of the media packet and sends (at 470) themedia packet through the second media portal 45 to enterprise device B.

Once the mapping table entry in the first media portal is completed, anypackets originated by enterprise device B can be forwarded (at 472 and474) through the firewall and NAPT module FNA to enterprise device A. Atthis point, bi-directional media flows can be performed (at 476) betweenenterprise devices A and B.

The various nodes and systems discussed each includes various softwareroutines or modules. Such software routines or modules are executable oncorresponding control units. Each control unit includes amicroprocessor, a microcontroller, a processor card (including one ormore microprocessors or microcontrollers), or other control or computingdevices. As used here, a “controller” refers to a hardware component,software component, or a combination of the two. Although used in thesingular sense, a “controller” can also refer to plural hardwarecomponents, plural software components, or a combination thereof.

The storage devices referred to in this discussion include one or moremachine-readable storage media for storing data and instructions. Thestorage media include different forms of memory including semiconductormemory devices such as dynamic or static random access memories (DRAMsor SRAMs), erasable and programmable read-only memories (EPROMs),electrically erasable and programmable read-only memories (EEPROMs) andflash memories; magnetic disks such as fixed, floppy and removabledisks; other magnetic media including tape; and optical media such ascompact disks (CDs) or digital video disks (DVDs). Instructions thatmake up the various software routines or modules in the various devicesor systems are stored in respective storage devices. The instructionswhen executed by a respective control unit cause the corresponding nodeor system to perform programmed acts.

The instructions of the software routines or modules are loaded ortransported to each node or system in one of many different ways. Forexample, code segments including instructions stored on floppy disks, CDor DVD media, a hard disk, or transported through a network interfacecard, modem, or other interface device are loaded into the device orsystem and executed as corresponding software routines or modules. Inthe loading or transport process, data signals that are embodied incarrier waves (transmitted over telephone lines, network lines, wirelesslinks, cables, and the like) communicate the code segments, includinginstructions, to the device or system. Such carrier waves are in theform of electrical, optical, acoustical, electromagnetic, or other typesof signals.

While the invention has been disclosed with respect to a limited numberof embodiments, those skilled in the art will appreciate numerousmodifications and variations therefrom. It is intended that the appendedclaims cover such modifications and variations as fall within the truespirit and scope of the invention.

What is claimed is:
 1. A method for communications involving a firstterminal coupled to a first side of a firewall and network addresstranslator, the method comprising: sending, from the first terminal to anode on a second side of the firewall and network address translator, afirst message identifying the first terminal to the node and indicatingthat the first terminal is available for a call session; receiving atthe first terminal a second message from the node, the first message andthe second message causing creation of a signaling connection throughthe firewall and network address translator and creation of a mappingbetween a first address of the first terminal and a second address ofthe first terminal, where the first address is an address assigned tothe first terminal on the first side of the firewall and network addresstranslator, and where the second address is the address assigned to thefirst terminal on the second side of the firewall and network addresstranslator; and repeatedly sending keep-alive messages to maintain themapping at the firewall and network address translator.
 2. The method ofclaim 1, wherein the keep-alive messages maintain the existing signalingconnection through the firewall and network address translator tothereby maintain the mapping at the firewall and network addresstranslator.
 3. The method of claim 1, further comprising receiving acommunication session request directed to the first terminal using themapping maintained at the firewall and network address translator. 4.The method of claim 3, wherein receiving the communication sessionrequest directed to the first terminal using the mapping maintained atthe firewall and network address translator comprises receiving thecommunication session request over the existing signaling connection. 5.The method of claim 1, wherein repeatedly sending the keep-alivemessages to maintain the mapping at the firewall and network addresstranslator comprises maintaining a timer and sending the keep-alivemessages responsive to the timer.
 6. The method of claim 5, wherein thetimer is maintained at the first terminal and the keep-alive messagesare sent from the first terminal.
 7. The method of claim 5, wherein thekeep-alive messages are sent from the first terminal over the signalingconnection.
 8. The method of claim 1, wherein repeatedly sending thekeep-alive messages comprises sending the keep-alive messages at regularperiodic time intervals.
 9. The method of claim 1, wherein the firstmessage comprises an identifier of the first terminal and an externaladdress assigned to the first terminal at the firewall and networkaddress translator, the method further comprising creating at the nodean association between the identifier of the first terminal and theexternal address assigned to the first terminal by the firewall andnetwork address translator.
 10. The method of claim 1, wherein the firstmessage comprises an indication that network address translation isactive for the first terminal, and the node creates an associationbetween an identifier of the first terminal and an external addressassigned to the first terminal by the firewall and network addresstranslator responsive to the indication that network address translationis active for the first terminal.
 11. The method of claim 1, wherein thesignaling connection comprises a Session Initiation Protocol (SIP)signaling connection between the first terminal and the node.
 12. Themethod of claim 1, wherein sending the first message comprises sending aregistration message requesting registration of the first terminal withthe node.
 13. The method of claim 12, wherein sending the registrationmessage comprises sending a Session Initiation Protocol (SIP) REGISTERmessage.
 14. The method of claim 13, wherein the SIP REGISTER messagecomprises an identifier of the first terminal and an external addressassigned to the first terminal at the firewall and network addresstranslator.
 15. The method of claim 14, wherein the SIP REGISTER messagecomprises a flag indicating that network address translation is activefor the first terminal, and the node creates the association between theidentifier of the first terminal and the external address assigned tothe first terminal by the firewall and network address translatorresponsive to the indication that network address translation is activefor the first terminal.
 16. The method of claim 13, wherein sending theregistration message comprises sending the registration message to a SIPproxy.
 17. The method of claim 16, wherein the node comprises the SIPproxy.
 18. The method of claim 1, wherein: sending the first message andreceiving the second message cause registration of the first terminal;and repeatedly sending the keep-alive messages to maintain the mappingat the firewall and network address translator is performed for aduration of the registration of the first terminal.
 19. The method ofclaim 1, wherein the mapping comprises the mapping between an internaladdress of the first terminal and an external address assigned to thefirst terminal by the firewall and network address translator.